﻿#include <iostream>
#include <list>

using namespace std;

/*
STL list 容器，又称双向链表容器，即该容器的底层是以双向链表的形式实现的。
这意味着，list 容器中的元素可以分散存储在内存空间里，而不是必须存储在一整块连续的内存空间中
*/

class stlExample
{
public:
	void testList();
	

};
void stlExample::testList() {
	/*
push_front()：向 list 容器首个元素前添加新元素；
push_back()：向 list 容器最后一个元素后添加新元素；
emplace_front()：在容器首个元素前直接生成新的元素；
emplace_back()：在容器最后一个元素后直接生成新的元素；
emplace()：在容器的指定位置直接生成新的元素；
insert()：在指定位置插入新元素；
splice()：将其他 list 容器存储的多个元素添加到当前 list 容器的指定位置处。
	
	*/
	list<int> valuesa; //创建一个没有任何元素的空 list 容器
	list<int> valuesb(10); //创建一个包含 n 个元素的 list 容器：
//通过此方式创建 values 容器，其中包含 10 个元素，每个元素的值都为相应类型的默认值（int类型的默认值为 0）。
	
	//在已有 list 容器的情况下，通过拷贝该容器可以创建新的 list 容器。
	std::list<int> value1(10);
	std::list<int> value2(value1);

	list<double> values;
	values.push_back(3.1);
	values.push_back(2.5);
	values.push_back(2.1);

	cout << "values size:" << values.size()<<endl;
	//排序函数
	values.sort();
	//++it 要比 it++ 节约变量资源 在for循环中.
	for (list<double>::iterator it = values.begin(); it != values.end(); ++it)
	{
		cout << *it << " ";
	}
	std::list<char> value_ch{ 'h','t','t','p',':','/','/','c','.','b','i','a','n','c','h','e','n','g','.','n','e','t' };
	for (list<char>::iterator it = value_ch.begin(); it != value_ch.end(); ++it)
	{
		cout << *it;
	}
	//使用 rbegin()/rend()迭代器函数输出 lsit 容器中的元素
	cout << endl;
	for (std::list<char>::reverse_iterator it = value_ch.rbegin(); it != value_ch.rend(); ++it) {
		std::cout << *it;
	}
}



int main()
{
	stlExample exp;
	exp.testList();
}


